package com.abcdefg.demo.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class ProduceMQ {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1.创建工厂连接
        ConnectionFactory factory = new ConnectionFactory();

        //2. 设置参数
        factory.setHost("123.249.25.146");//ip 默认值localhost
        factory.setPort(5672); //默认值5672
        factory.setVirtualHost("java");//虚拟机名称,

        factory.setUsername("ABCDEFG");//⽤⼾名
        factory.setPassword("20041106");//密码

        //3. 创建连接Connection
         Connection connection = factory.newConnection();

        //4. 创建channel通道
         Channel channel = connection.createChannel();

        /**
         * queueDeclare(String queue, boolean durable, boolean exclusive, boolean
         * autoDelete, Map<String, Object> arguments)
         * 1.queue: 队列名称
         * 2.durable: 是否持久化.true-设置队列为持久化, 待久化的队列会存盘,服务器重启之后, 消息不
         * 丢失。
         * 3.exclusive:是否独占（队列只能让一个消费者消费）
         * 4.autoDelete: 是否⾃动删除, 当没有Consumer时, ⾃动删除掉
         * 5.arguments: ⼀些参数
         */
        //5.声明一个队列
        //如果没有⼀个hello 这样的⼀个队列, 会⾃动创建, 如果有, 则不创建
         channel.queueDeclare("hello",true,false,false,null);

         //6. 通过channel发送消息到队列中
        /**
         * basicPublish(String exchange, String routingKey, AMQP.BasicProperties props,byte[] body)
         * 1.exchange: 交换机名称, 简单模式下, 交换机会使⽤默认的""
         * 2.routingKey: 路由名称, routingKey = 队列名称
         * 3.props: 配置信息
         * 4.body: 发送消息的数据
         */
        for (int i = 0; i < 10; i++) {
            String msg="hello world"+i;
            channel.basicPublish("","hello",null,msg.getBytes());
        }
        //7.释放资源
        channel.close();
        connection.close();
    }

}
